﻿#define _CRT_SECURE_NO_WARNINGS 1
// 原题连接：https://ac.nowcoder.com/acm/problem/233601

/*
题目描述：
链接：https://ac.nowcoder.com/acm/problem/233601
来源：牛客网

给出一个有
𝑛
n种字符组成的字符串，其中第
𝑖
i种字符出现的次数为
𝑎
𝑖
a
i
​
 。请你对该字符串应用哈夫曼编码，使得该字符串的长度尽可能短，求编码后的字符串的最短长度。
输入描述:
第一行输入一个整数
𝑛
n (
1
≤
𝑛
≤
2
⋅
1
0
5
1≤n≤2⋅10
5
 )，表示字符种数。
第二行输入
𝑛
n个整数
𝑎
𝑖
a
i
​
  (
1
≤
𝑎
𝑖
≤
1
0
9
1≤a
i
​
 ≤10
9
 )，表示每种字符的出现次数。
输出描述:
输出一行一个整数，表示编码后字符串的最短长度。
示例1
输入
复制
3
1 2 3
输出
复制
9
说明
三种字符的哈夫曼编码分别为["00","01","1"]时，长度最短，最短长度为9。
*/


#include <iostream>
#include <cstring>
#include <queue>
using namespace std;
int n = 0;
// 方法——贪心 + 堆

int main() {
    scanf("%d", &n);
    int x = 0;
    priority_queue<long long, vector<long long>, greater<long long>> heap;
    for (int i = 0; i < n; i++) {
        scanf("%d", &x);
        heap.push(x);
    }
    long long ret = 0;
    long long a = 0, b = 0;
    while (heap.size() > 1) {
        a = heap.top();
        heap.pop();
        b = heap.top();
        heap.pop();
        ret += a + b;
        heap.push(a + b);
    }
    printf("%lld\n", ret);
    return 0;
}